﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Foundation;
using System.ComponentModel;

namespace DataAccess {
    public interface IDataAccess {
        void writeTrack(Track t);
        void writeTracks(List<Track> tracks);

        List<Track> selectTracks();


        List<Category> GetAllCategories();

        void SaveNewCategory(Category value);



        List<Track> GetUntaggedTracks();

        void Save(Category c);

        List<Track> GetTracksByCategory(Category cat);

        /// <summary>
        /// Erstellt eine neue SoundSuite
        /// </summary>
        /// <param name="name"></param>
        void CreateNewSoundSuite(String name); 

        /// <summary>
        /// Gibt eine Liste mit allen SoundSuiten zurück
        /// </summary>
        /// <returns></returns>
        List<SoundSuite> GetAllSoundSuites();

        void DeleteSuite(SoundSuite soundSuite);

        /// <summary>
        /// Gibt ein Array mit allen Effect Groups zurück, welche zu einer mitgegebenen SoundSuite gehören
        /// </summary>
        /// <param name="guid"></param>
        /// <returns></returns>
        object[] getEffektGroupsFromSoundSuiteID(Guid guid);

        /// <summary>
        /// Gibt eine Soundsuite anhand einer ID zurück
        /// </summary>
        /// <param name="guid"></param>
        /// <returns></returns>
        SoundSuite GetSoundSuiteByID(Guid guid);

        /// <summary>
        /// Fügt eine neue Effekt Gruppe der Datenbank hinzu
        /// </summary>
        /// <param name="effektGroup"></param>
        void AddNewEffektGroup(EffektGroup effektGroup, Guid soundSuiteID);
    }
}
